package cn.tedu.oop;
/*本类用于this关键字测试2*/
public class TestVariableThis2 {

    public static void main(String[] args) {
        //3.创建Dog类对象
        Dog dog=new Dog();//触发无参构造对象
        Dog dog1=new Dog("旺财");//触发含参构造对象


    }
}
/*1.this还可以实现构造方法间的调用
* 但请千万注意，构造方法间不能来回调用
* */
//1.抽象封装形成一个小狗类
class Dog{
    String name;

    //2.1创建本类的无参构造
    public Dog(){
        /**规定：this关键字必须在构造方法的第一行使用，否则报错*/
        /*在无参构造中，调用含参构造的功能*/
        this("hahahahaahaahahahahaahahahahaahhahahahahahah");//Call to 'this()' must be first statement in constructor body
        System.out.println("I am Constructor without parameter");
    }
    //2.2创建本类的含参构造
    public Dog(String name){
        //在含参构造方法中调用无参构造方法
        /**规定：this关键字必须早构造方法的第一行中使用，否则报错*/
        /*禁止   递归调用*///Recursive constructor invocation
        //this();
        System.out.println("I am Constructor with parameter;\nname is "+name);
        this.name=name;
    }

}
